﻿Imports System.Runtime.Serialization
Imports System.ServiceModel
Imports WSEntidades
Imports WSNegocios

' NOTA: puede usar el comando "Cambiar nombre" del menú contextual para cambiar el nombre de clase "ServiceCuentas" en el código, en svc y en el archivo de configuración a la vez.
Public Class ServiceCuentas
    Implements IServiceCuentas

    Public Function RegistrarCuenta(ByVal cuenta As CatCuentasBE, ByRef detRespuesta As DetalleRespuesta) As Boolean _
                    Implements IServiceCuentas.RegistrarCuenta
        Dim cuentaBL As CuentasBL = New CuentasBL()
        detRespuesta = New DetalleRespuesta()
        Try
            Return (cuentaBL.RegistrarCuenta(cuenta, detRespuesta))
        Catch ex As Exception
            detRespuesta.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                          detRespuesta.Mensajes & "Error al registrar la cuenta: " & ex.Message)
            Return False
        Finally
            cuentaBL = Nothing
        End Try
    End Function

    Public Function Login(ByVal Rfc As String, ByVal Usuario As String, ByVal Password As String, ByRef token As String,
                          ByRef razonSocial As String, ByRef esquemaFacturacion As Enumeraciones.esquemaFacturacion,
                          ByRef nombreUsuario As String, ByRef detRespuesta As DetalleRespuesta) As Boolean Implements IServiceCuentas.Login
        Dim userBL As UsuariosBL = New UsuariosBL()
        detRespuesta = New DetalleRespuesta()
        Try
            Return (userBL.Login(Rfc, Usuario, Password, token, razonSocial, esquemaFacturacion, nombreUsuario, detRespuesta))
        Catch ex As Exception
            detRespuesta.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                          detRespuesta.Mensajes & "Error al autenticar al usuario: " & ex.Message)
            Return False
        Finally
            userBL = Nothing
        End Try
    End Function

    Public Function RecuperarContraseña(ByVal RFC As String, ByVal usuario As String, ByRef detRespuesta As DetalleRespuesta) As Boolean Implements IServiceCuentas.RecuperarContraseña
        Dim userBL As UsuariosBL = New UsuariosBL()
        detRespuesta = New DetalleRespuesta()
        Try
            Return (userBL.RecuperarContraseña(RFC, usuario, detRespuesta))
        Catch ex As Exception
            detRespuesta.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                          detRespuesta.Mensajes & "Error al recuperar contraseña del Usuario <" & usuario & "> para la Cuenta <" & RFC & ">: " & ex.Message)
            Return False
        Finally
            userBL = Nothing
        End Try
    End Function

    Public Function RecuperarContraseñaRecuperarUsuario(ByVal RFC As String, ByVal correo As String, ByRef detRespuesta As DetalleRespuesta) As Boolean _
        Implements IServiceCuentas.RecuperarUsuario
        Dim userBL As UsuariosBL = New UsuariosBL()
        detRespuesta = New DetalleRespuesta()
        Try
            Return (userBL.RecuperarUsuario(RFC, correo, detRespuesta))
        Catch ex As Exception
            detRespuesta.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                          detRespuesta.Mensajes & "Error al recuperar Usuario para el correo <" & correo & "> en la Cuenta <" & RFC & ">: " & ex.Message)
            Return False
        Finally
            userBL = Nothing
        End Try
    End Function
End Class
